iT邦幫忙

2021 iThome 鐵人賽

DAY 21
0

Child Process

tags: IT鐵人

Context Switching

前面提到電腦會輪流執行不同的程式,而在輪流的過程中一定會有轉換的步驟,這個步驟就叫做Context Switching。

它的定義是:當CPU要切換到另一個process時,OS要儲存舊有的process狀態,並且載入新的process狀態,就稱為Context Switch。

就像是這張圖一樣,在切換的過程中會由系統管理,並且會花費一定的時間,時間長短大多取決於硬體,例如Context內容多寡、指令速度的快慢、Register是否夠用。

降低Context Switch Overhead

Overhead指的是成本,通常在OS中指的是額外的時間成本,改善Context Switch Overhead的主要方法有下面兩者:

  • Multiple Registers Set
    如果只有一套Register,那麼新Process要載入的時候要等舊Process存會去PCB才行。
    每個Process都有自己的Registers Set的話,當Context Switch發生時,只要把point切換到另一套Registers Set就好。

  • Multithread
    Thread的部分會在後面的章節說明,他的overhead會比切換process更低。

Dispatcher

Dispatcher的目的就是分配CPU給CPU Scheduler所挑出的user process,他的主要工作包含以下三者:

1.Context Switching
2.Switch mode to user mode
3.Jump to the execution entry of that process

以上三個時間加總稱為Dispatch Lantency,當然我們也會希望能減少這樣的時間。

Process Control Operations

電腦的Process也有複雜的關係,不是所有的Process都是平等的,有的會有上下關係,有的會有資料共用的關係等等,底下會講一些Process的觀念。

Process Creation

任何一個process均可建立process,通常parent prceoss creates many child processes。

建立child process的目的是要他執行工作。

child所做的工作,分為下面兩種類型:

1.與parent相同的工作,ex:vi editor(Linux常用的文字編輯指令)。
2.與parent不同的工作,specific task。

Child Process Resources

Process的資料提供來源有兩者:

1.OS
2.parent(全部與child共享、subset of resources)

Parent與Child之互動關係

parent process創立child process之後可能有不同的對待方式,就像是不同的父母對不同的小孩有不同的待遇。

1.parent等待child完成工作。
2.parent和child同時進行工作。

Process之終止

process執行過程可能遭遇各種狀況,最常見的是完成工作發出system call(ex:Exit()),告訴kernel終止他,收回resource。

還可能發生異常,由kernel自行終止(ex:divide by Zero)。

也有可能parent動手處決child,例如:child已完成交辦工作、child使用過多resource、parent被kernel終止導致其下所有child一併終止(Cascading termination)。

不過也有可能parent終止後,OS允許child繼續存活,此時child的parent可能變成OS或是原先的grandparent。

此外child還有可能成為orphan或是zombie,這部分蠻有趣的,也是每年系上工作站被搞垮的原因之一,因為許多修OS的學生在工作站上面執行程式生成太多zombie,導致工作站塞爆無法進入。

上一篇 下一篇
Process 常用Sysem Call

How to kill a child

因為有時child process需要被消除,而消除別的process又會用kill這個字,變成有時候google內容引人遐想。


上一篇
Day-20 Process
下一篇
Day-22 常用System Call
系列文
杰哥的考研紀錄30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言